package main

import "golearnpro/基本语法/goroute/guangduyouxian/lib"

/**
广度优先算法讲解
迷宫只能上下左右走
0 格子 可以走 1 不可以走 当然不能越界
求出最短距离

1、抛弃掉迷宫图 貌似大富翁 降落在一个未知的任意位置
2、开始探索 我有上下左右四个方向可以探索
3、通过一步的格子能走到的位置我们都已经知晓探路探到了4个格子 只是探索并没有真的走到上面去。
4、探索的顺序 ↑ ← ↓ →
5、根据时序先走上面的那个格子 走上去
6、探索 格子
7、根据探索可以得到  上面格子的探索格子 ↑ ← → 下是已经走过的格子布在探索范围内
8、探索后不往下走了在走成了深度优先了，按照 4 退回到 上一步 探索←
9、探索← 往左上一步 探索可以得到 ↑ ← ↓
.... 后面就是重复了


分析怎么用代码写？
1、发现还没有探索的状态
2、实际探索
3、探索过
4、没发现的

已经发现没有探索的需要排队

迷宫矩阵
0 1 0 0 0
0 0 0 1 0
0 1 0 1 0
1 1 1 0 0
0 1 0 0 1
0 1 0 0 0

假设空头到起点 0，0
1、创建已经发现没有探索的点的队列
2、把发现没探索 扔到上面待探索队列 0,0
3、从0.0开始探索 0.0 ← ↑ 都是墙过不去 右是1 过不去就剩下面了
4、探索到了 1，0 点扔到探索队列， 0，0点代表已经走过的路可行扔到已经走过的路径上队列
5、探索 1，0 去已经走过的路径队列查询是不是走过了 没走过继续判断是不是墙 是不是 1
6、探索出 2，0 1，1 -> 进探索队列 2，0 死路扔了 1，1继续 1,1可以往下走扔到可以走队列
....

最后可走路径倒过来看就是一条最短路径 需要在点上开辟经过几步过来的 然后倒过来 倒序步长点就行了

1、结束条件
终点
探索队列没有点了


    0    1     2
0   0  0,1   0,2
1 1,0  1,1   1,2
*/
func main() {
	// 读取迷宫的文件
	lib.Mg()
}
